The VideoToolbox


June 13, 1996

The VideoToolbox web site is http://rajsky.psych.nyu.edu/VideoToolbox/
Most of the documentation is there.

Denis Pelli
Professor of Psychology and Neural Science
Department of Psychology
New York University
6 Washington Place
New York, NY 10003
denis@psych.nyu.edu

New version (June 12, 1996) of the VideoToolbox available for downloading.
Now compatible with Metrowerks CodeWarrior 9 and Symantec 8.1.

The VideoToolbox is a collection of two hundred C subroutines and several demo and utility programs that I and others have written to do visual psychophysics with Macintosh computers. It is fully compatible with 680x0 and PowerPC Macs and with Metrowerks CodeWarrior and Symantec C compilers. It's free and may not be sold without permission. It should be useful to anyone who wants to present accurately specified visual stimuli or use the Mac for psychometric experiments. The text file "Video synch" discusses all the ways of synchronizing programs to video displays and the many pitfalls to avoid. The TimeVideo application checks out the timing of all video devices in anticipation of their use in critical real-time applications, e.g. movies or lookup table animation. "Video bugs" reports all known bugs uncovered by TimeVideo's testing of 56 video cards and drivers. Low-level routines control video timing and lookup tables, display real-time movies, and implement the luminance-control algorithms suggested by Pelli and Zhang (1991). In particular, CopyWindows (or CopyBitsQuickly) faithfully copies between on-screen and off-screen windows (or bit/pixmaps), WindowToEPS saves an image to disk as encapsulated PostScript, for later printing or incorporation into a document, and SetEntriesQuickly and GDSetEntries load the screen's color lookup table, all without any of QuickDraw's color translations. NoisePdfFill.c quickly generates visual noise images whose pixels are samples from a specified probability density function. High-level routines help analyze psychophysical experiments (e.g. maximum-likelihood fitting and graphing of psychometric data). Assign.c is a runtime C interpreter for C assignment statements, which is useful for controlling experiments and sharing calibration data. This collection has been continually updated since 1991. More that one hundred colleagues subscribe to the email distribution (see below), and have indicated that they are using the software in their labs. Documentation is in the source files themselves. Many of the routines are Mac-specific, but some very useful routines, e.g. the luminance-control, statistics, maximum-likelihood fitting algorithms, and the runtime interpreter are written in Standard C and will work on any computer. Those wishing to acknowledge use of the VideoToolbox software might cite:
Pelli, D. G. and Zhang, L. (1991) Accurate control of contrast on microcomputer displays. Vision Research, 31, 1337-1350. Reprints are available.

AVAILABILITY:
The VideoToolbox software is updated several times a year. You can download the latest version from the web site, or from Info-Mac (search for "video-toolbox"). For notification of new releases, just send me your name and email address. There are currently 186 subscribers to the notification list.

The VideoToolbox is distributed as a Stuffit archive. You'll need Stuffit Expander to unpack it. (Available from Info-Mac, search for "stuffit-expander".) They have versions for MacOS and Windows.

BUGS & SUGGESTIONS:
It's unlikely that you'll find any bugs, but if you do, please send me email so we can fix 'em. Suggestions and code donations (i.e. C routines to be included in the VideoToolbox, possibly in modified form, with full attribution) are warmly appreciated. Also many people have contributed useful paragraphs, which appear in the VideoToolbox notes, with attribution, about specific technical issues that they identified and perhaps solved.

Good luck!

denis
denis@psych.nyu.edu


AUTHORS:
Adobe (ATMInterface.c and ATMInterface.h)
Apple (IsCmdPeriod.c,MoveMouse.c,TrapAvailable.c, Zoom.c)
Kevin Bell (PatchExitToShell in Timer.c)
Philipp Biermann ("Multisync Sense Pins.note")
David Brainard (AfterDark.c,12 in Assign.c,1 in GDOpenWindow.c, GetTimeDateString.c, PeekTimer in Timer.c)
EJ Chichilniski (SetFileInfo.c)
Raynald Comtois (SetEntriesQuickly.c)
Frans Cornelissen (VideoToolbox folder icon)
Steve Coy (PatchExitToShell in Timer.c)
Bart Farell (several routines in SetOnePixel.c and SetPixelsQuickly.c)
Bill Haake (SetEntriesQuickly.c)
C.K. Haun, Apple Computer (KillEveryoneButMe.c)
Bill Hofmann (PatchExitToShell in Timer.c)
Mike Kahl (CopyQuickDrawGlobals.c, kbhit.c)
Joseph Laffey (GetVersionString.c)
Peter Lennie (SetEntriesQuickly.c)
J.N. Little & jmb (ReadMATLABFile.c)
Jamie R. McCarthy (IsCmdPeriod.c)
Izumi Ozhawa (CVNetConvert in the Utilities folder)
Denis Pelli (most of the routines)
Dave Radcliffe (FlushCacheRange.c)
Evan Relkin (kbhit.c)
Mike Schechter (PixMapToPICT.c)
Dan Sears (IsCmdPeriod.c,MoveMouse.c)
SPLAsh Resources (HideMenuBar.c, SetMouse.c)
Preeti Verghese (GetVoltage.c)
Detailed attribution appears in each file. Please advise of any errors or omissions.

THE FINE PRINT:
Copyright ©1989-1996 Denis G. Pelli. The accompanying software is free; you may use it in your research and give it away to others, with the following restrictions. Any copy you give away must include this paragraph, unmodified, and any file that you have changed must include a note, added to HISTORY, giving your name, the date, and a description of the changes. This software may not be sold, whether in source or compiled form, without my permission. I hereby grant permission to include the whole VideoToolbox in multi-megabyte collections of software that sell for less than $100, since such sales enhance public access to the public software archives. I hope you will find this software useful, but I can't promise that it will work for you, and am not offering any support. That's why it's free. I would appreciate reports of bugs and improvements.

SetMouse.c and HideMenuBar.c are copyrighted by SPLASH Resources. Their restrictions are reproduced in those files. FlushCacheRange.c (originally called Cache.c) is copyrighted by Apple Computer Corp. The compiled applications incorporate code copyrighted by others: Copyright © 1989 THINK Technologies, Inc. Certain portions of this software are copyrighted by THINK Technologies, Inc. Copyright © 1988 Cambridge University Press. The Numerical Recipes in C are copyrighted by Cambridge University Press. KillEveryoneButMe.c is based on a routine of the same name by C.K. Haun, Copyright © 1991-2 Apple Computer.

DISCLAIMER (included at the request of the MacPsych archive):
The VideoToolbox is provided "as is" without warranty of any kind. Denis Pelli, New York University, SCiP, the operators of MacPsych, and St. Olaf College make no claims concerning the accuracy or correctness of the computer code contained in, or the results of the use of VideoToolbox. The entire risk as to the results and performance of VideoToolbox is assumed by you. If the VideoToolbox is defective you, and not Denis Pelli, New York University, SCiP, the operators of MacPsych, or St. Olaf College assume the entire cost of all necessary servicing, repair or correction.